基本概念

实体概念 相对硬盘
heads 磁头
sectors 扇区 每个扇区512byte(现在新的硬盘每个扇区有4K)
cylinders 柱面

虚拟概念 相对文件系统
block:文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。

硬盘容量就是headssectorscylinders*512

注意:硬盘的最小存储单位就是扇区了,而且硬盘本身并没有block的概念。

Unix文件系统概述

文件

Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容。

参考

《深入理解linux内核》

问题集

1.假设Apache产生的日志文件名为access_log,在apache正在运行时,执行命令mv access_log access_log.bak,执行完后,请问新的apache的日志会打印到哪里,请选择下列描述正确的是?

A. 系统会检查access_log文件是否存在,若不存在则创建。

B. 虽然此时文件被改名,但是由于服务正在运行,因为它的inode节点的位置没有变,程序打开的fd仍然会指向原来那个inode,不会因为文件名的改变而改变。apache会继续向已改名的文件中追加日志。

正确答案: B

mv对inode的影响:

前提:使用mv命令搬移的文件目的地跟原文件在同一文件系统内

  1. 系统会新建一个目录项,将新档案名称对应到inode number (注意,inode number并没有变,只是对应了新的名字)
  2. 删除旧档案

(搬移档案的行为对inode table没有任何影响,也不会将档案搬移到其他的block)

由此可见,在我们看来access_log 和 access_log.bak 是两个不同的文件,其实他们是同一个文件,只是换了名字而已。
由于程序打开的fd指向原来的iNode,而MV操作并不会改变这个inode,因此对正在运行的程序不会产生影响。

参考